package com.egg.basic.config.pay;

import com.ijpay.wxpay.WxPayApiConfig;
import com.ijpay.wxpay.WxPayApiConfigKit;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

/**
 * 微信配置
 */
@Profile({"prod", "test", "dev"})
@Slf4j
@Data
@Configuration
@ConfigurationProperties(prefix = "pay.wechat")
public class PayWechatConfig {


    // 应用编号
    private String appId;
    // 秘钥
    private String appSecret;
    // 商户号
    private String mchId;
    // apiKey
    private String partnerKey;
    // API 证书中的 p12 证书路径，在微信商户后台下载
    private String certPath;
    // 外网访问项目的域名，支付通知中会使用
    private String domain;
    // 支付回调地址
    private String payNotifyUrl;
    // 完整的支付回调地址
    private String fullPayNotifyUrl;

    @Bean
    public WxPayApiConfig initWxpayApiConfig() {
        WxPayApiConfig apiConfig;
        try {
            apiConfig = WxPayApiConfig.builder()
                    .appId(getAppId())
                    .mchId(getMchId())
                    .partnerKey(getPartnerKey())
                    .certPath(getCertPath())
                    .domain(getDomain())
                    .build();
            WxPayApiConfigKit.putApiConfig(apiConfig);
            log.info("初始化成功 {}", WxPayApiConfig.class.getName());
            return apiConfig;
        } catch (Exception e) {
            log.error("初始化失败 {} 原因 {}", WxPayApiConfig.class.getName(), e.getMessage());
        }
        return null;
    }

}